iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
1

問題:

為什麼有時候 ajax 會發兩次 request?

原因:

因為只要發送請求到不同 origin 就會有 cors 的問題

所以 server 必須先確定 client 端是合法請求,也就是

Preflighted 要先發一次 request 去驗證是否合法 domain

成功了才能發真正的 request

Cors

request 必須符合 same origin policy (同源政策)

  • Domain ㄧ樣
  • Port ㄧ樣
  • http 協定一樣

才能確保是站內取得站內的資料不會被外部隨便入侵

但若有需求(ex: 開 api)是需要讓其他 domain 使用的話就必須開放

Cors ,去驗證允許你要哪個 domain 可以跟你要資料

解決:

每當 client fetch 時會有兩種方式

  • Preflighted request

Preflighted request 就是像剛剛講的流程會先發一次

request 跟 server 做驗證,在發一次拿真的資料

,一般情況下所有 request 都是使用 preflighted req

  • Simple request

    在符合某些條件下,可以省去驗證的 request,好處是可以少一個 request ,但是通常要設定,Header 資料格式,而那些格式又不常使用,所以極為少見使用

Ref:

issus

Fetch rule


上一篇
Day 23 shallow deep copy
下一篇
Day 25 Restfull api 限制
系列文
30 天 node.js 學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言